//-------------------------------------------------------------------
//	Copyright (c) 2010-2012  Zhirnov Andrey
//	This file is part of the "UXGEN" project.
//	See copyright notice in "Engine.h".
//-------------------------------------------------------------------

#ifndef _UX_MAIN_TYPES_H
#define _UX_MAIN_TYPES_H

#include "../Defines/Defines.h"
#include "OS/Windows/WindowsTypes.h"
//#include "OS/Linux/LinuxTypes.h"

namespace Engine
{

	namespace UXTypes
	{
		// all types
	}

	namespace UXMath
	{
		// all math types
	}

	namespace CoreSystems
	{
		// all engine systems
		class CCore;
		class CInput;
		class CConfig;
		class CLogger;
		class IThread;
		class IWindow;
		class CRender;
		class CRenderThread;
		class UX_OSAPI;
		class CFileSystem;
		class CSoundSystem;
		class CThreadManager;
		class CObjectManager;
		class CResourceManager;
	}

	namespace CLSystems
	{
		// CL types
		class CLDevice;
	}

	namespace GLSystems
	{
		// GL types
		class CRenderGL;
		class CStatistic;
		class CMatrixStack;
		class CBatchRender;
		class CStateManager;
		class CGLObjectManager;
	}

	namespace RenderUtils
	{
		// render types
		class CViewport;
		class IRenderQueue;
		class IRenderObject;
		class IRenderTechnique;
		class CUniformManager;
		class CSamplerManager;
	}

	namespace Resources
	{
		// all resources
		class CResource;
	}

	namespace Scene
	{
		class CSceneManager;
		class CSceneObjectFactory;
	}

	namespace GUI
	{
		// all GUI objects
		class CWidget;
		class CScreen;
		class CBaseStyle;
		class CGUISystem;
		class CGUIObjectFactory;
	}

	namespace Loaders
	{
		// all Resource Loaders
	}

	namespace Parsers
	{
		// all Config Parsers
		class IParser;
	}
	
	namespace ConfigTypes
	{
		// all Config Types
	}

	namespace FileSystem
	{
		// all File Types
		class IFile;
		class CFile;
	}

	struct TMetaDataInitializer;

	//using namespace UXTypes;
	//using namespace UXMath;
	using namespace CoreSystems;
	using namespace Resources;
	using namespace CLSystems;
	using namespace GLSystems;
	using namespace RenderUtils;
	using namespace GUI;
	using namespace Scene;
	using namespace ConfigTypes;
	using namespace FileSystem;
	using namespace Parsers;

//-------------------------------------------------------------------

}	// Engine

#endif	// _UX_MAIN_TYPES_H